package com.example.file
import java.io.File
class File1 {


	static void main(String[] args) {

		//File类用于实例化以文件名作为参数的新对象。 然后它接受eachLine的函数，
		//将它放到一个line的变量并相应地打印它。
		new File("D:/file1.txt").eachLine {   line ->
			println "line : $line";
		}
		
		//如果要将文件的整个内容作为字符串获取，可以使用文件类的text属性
		println("如果要将文件的整个内容作为字符串获取，可以使用文件类的text属性")
		File file = new File("D:/file1.txt");
		println file.text;
		
		//如果你想写入文件，你需要使用作家类输出文本到一个文件中
//		new File("D:/","file2.txt").withWriter('utf-8') {
//			writer -> writer.writeLine("Hello World")
//		}
		
		//追加的方式写入文件
		new File("d:/","file2.txt").withWriterAppend("utf-8") { 
			writer -> writer.writeLine("我用追加的方式添加2"); 
		}
		
		//如果要获取文件的大小，可以使用文件类的length属性来获取
		File file2 = new File("d://file2.txt");
		println "The file ${file2.absolutePath} has ${file2.length()} bytes"
		
		//如果要查看路径是文件还是目录，可以使用File类的isFile和isDirectory选项
		def file3 = new File('d://')
		println "File?${file3.isFile()}"
		println "Directory? ${file3.isDirectory()}"
		
		//创建目录
		def file4 = new File("d://groovyTest")
		file4.mkdir();//如果不存在会自动创建
		
		//删除文件
//		file3.delete();//删除文件
		//复制文件
		//这里假设把file2文件复制到d://groovyTest目录中的file3.txt
		def file5 = new File("d://groovyTest/file3.txt")
		file5 << file2.text //把file3中的内容复制到file5中去,注意这里是追加的方式。
							//如果要覆盖的方式，要用withWriter的方式写入
		
		//使用File类的eachFile函数列出特定目录中的文件。(注意这个只是显示当前目录下)
		new File("d://groovyTest").eachFile { 
			file6 -> println file6.getAbsolutePath();
		}
		
		println('====================')
		//如果要递归显示目录及其子目录中的所有文件，则可以使用File类的eachFileRecurse函数
		new File("d://groovyTest").eachFileRecurse { 
			file7 -> println file7.getAbsolutePath();
		}
		
		
		
		
		
	}
}
